package com.chushouya.product.service.admin;

import com.general.framework.core.schema.PageResult;
import com.chushouya.product.dto.admin.skuevaluate.SkuEvaluateItemDetailDTO;
import com.chushouya.product.dto.admin.skuevaluate.SkuEvaluateItemListDTO;
import com.chushouya.product.dto.admin.skuevaluate.SkuEvaluateItemQuery;
import com.chushouya.product.dto.admin.skuevaluate.SkuEvaluateItemSaveDTO;
import com.chushouya.product.dto.admin.skuevaluate.SkuEvaluateItemUpdateDTO;

import java.util.List;

/**
 * SKU估价项目业务
 */
public interface SkuEvaluateItemService {

    /**
     * 分页查询SKU估价项目
     * @param query 参数
     * @return 分页对象
     */
    PageResult<SkuEvaluateItemListDTO> selectSkuEvaluateItemPageResult(SkuEvaluateItemQuery query);

    /**
     * 查询SKU估价项目列表
     * @param query 参数
     * @return 列表
     */
    List<SkuEvaluateItemListDTO> selectSkuEvaluateItemList(SkuEvaluateItemQuery query);

    /**
     * 根据ID查询SKU估价项目
     * @param skuItemId SKU估价项目ID
     * @return SKU估价项目详情
     */
    SkuEvaluateItemDetailDTO getSkuEvaluateItemDetail(Long skuItemId);


    /**
     * 新增SKU估价项目
     * @param skuEvaluateItem SKU估价项目
     * @return ID
     */
    Long addSkuEvaluateItem(SkuEvaluateItemSaveDTO skuEvaluateItem);

    /**
     * 修改SKU估价项目
     * @param skuEvaluateItem SKU估价项目
     * @return ID
     */
    Long editSkuEvaluateItem(SkuEvaluateItemUpdateDTO skuEvaluateItem);

    /**
     * 删除SKU估价项目
     * @param skuItemId SKU估价项目ID
     */
    void removeSkuEvaluateItem(Long skuItemId);

    /**
     * 修改SKU估价项目状态
     * @param skuItemId SKU估价项目ID
     * @param status 状态
     * @return ID
     */
    Long editSkuEvaluateItemStatus(Long skuItemId, Integer status);

    /**
     * 根据SKU ID查询估价项目列表
     * @param skuId SKU ID
     * @return 列表
     */
    List<SkuEvaluateItemListDTO> selectSkuEvaluateItemListBySkuId(Long skuId);

    /**
     * 根据估价项目ID查询SKU估价项目列表
     * @param evaluateItemId 估价项目ID
     * @return 列表
     */
    List<SkuEvaluateItemListDTO> selectSkuEvaluateItemListByEvaluateItemId(Long evaluateItemId);

    /**
     * 从模板导入估价项目
     * @param productId 商品ID
     * @param tempId 模板ID
     */
    void importFromTemplate(Long productId, Long tempId);
}
